home *** CD-ROM | disk | FTP | other *** search
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- NNNNAAAAMMMMEEEE
- ci - check in RCS revisions
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- cccciiii [_o_p_t_i_o_n_s] _f_i_l_e ...
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- cccciiii stores new revisions into RCS files. Each pathname matching an RCS
- suffix is taken to be an RCS file. All others are assumed to be working
- files containing new revisions. cccciiii deposits the contents of each working
- file into the corresponding RCS file. If only a working file is given,
- cccciiii tries to find the corresponding RCS file in an RCS subdirectory and
- then in the working file's directory. For more details, see FILE NAMING
- below.
-
- For cccciiii to work, the caller's login must be on the access list, except if
- the access list is empty or the caller is the superuser or the owner of
- the file. To append a new revision to an existing branch, the tip
- revision on that branch must be locked by the caller. Otherwise, only a
- new branch can be created. This restriction is not enforced for the
- owner of the file if non-strict locking is used (see rrrrccccssss(1)). A lock
- held by someone else may be broken with the rrrrccccssss command.
-
- Unless the ----ffff option is given, cccciiii checks whether the revision to be
- deposited differs from the preceding one. If not, instead of creating a
- new revision cccciiii reverts to the preceding one. To revert, ordinary cccciiii
- removes the working file and any lock; cccciiii ----llll keeps and cccciiii ----uuuu removes any
- lock, and then they both generate a new working file much as if ccccoooo ----llll or
- ccccoooo ----uuuu had been applied to the preceding revision. When reverting, any ----nnnn
- and ----ssss options apply to the preceding revision.
-
- For each revision deposited, cccciiii prompts for a log message. The log
- message should summarize the change and must be terminated by end-of-file
- or by a line containing .... by itself. If several files are checked in cccciiii
- asks whether to reuse the previous log message. If the standard input is
- not a terminal, cccciiii suppresses the prompt and uses the same log message
- for all files. See also ----mmmm.
-
- If the RCS file does not exist, cccciiii creates it and deposits the contents
- of the working file as the initial revision (default number: 1111....1111). The
- access list is initialized to empty. Instead of the log message, cccciiii
- requests descriptive text (see ----tttt below).
-
- The number _r_e_v of the deposited revision can be given by any of the
- options ----ffff, ----iiii, ----IIII, ----jjjj, ----kkkk, ----llll, ----MMMM, ----qqqq, ----rrrr, or ----uuuu. _r_e_v may be symbolic,
- numeric, or mixed. Symbolic names in _r_e_v must already be defined; see
- the ----nnnn and ----NNNN options for assigning names during checkin. If _r_e_v is $$$$,
- cccciiii determines the revision number from keyword values in the working
- file.
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- If _r_e_v begins with a period, then the default branch (normally the trunk)
- is prepended to it. If _r_e_v is a branch number followed by a period, then
- the latest revision on that branch is used.
-
- If _r_e_v is a revision number, it must be higher than the latest one on the
- branch to which _r_e_v belongs, or must start a new branch.
-
- If _r_e_v is a branch rather than a revision number, the new revision is
- appended to that branch. The level number is obtained by incrementing
- the tip revision number of that branch. If _r_e_v indicates a non-existing
- branch, that branch is created with the initial revision numbered _r_e_v....1111.
-
- If _r_e_v is omitted, cccciiii tries to derive the new revision number from the
- caller's last lock. If the caller has locked the tip revision of a
- branch, the new revision is appended to that branch. The new revision
- number is obtained by incrementing the tip revision number. If the
- caller locked a non-tip revision, a new branch is started at that
- revision by incrementing the highest branch number at that revision. The
- default initial branch and level numbers are 1111.
-
- If _r_e_v is omitted and the caller has no lock, but owns the file and
- locking is not set to _s_t_r_i_c_t, then the revision is appended to the
- default branch (normally the trunk; see the ----bbbb option of rrrrccccssss(1)).
-
- Exception: On the trunk, revisions can be appended to the end, but not
- inserted.
-
- OOOOPPPPTTTTIIIIOOOONNNNSSSS
- ----rrrr[_r_e_v]
- checks in revision _r_e_v, releases the corresponding lock, and removes
- the working file. This is the default.
-
- The bare ----rrrr option (without any revision) has an unusual meaning in
- cccciiii. With other RCS commands, a bare ----rrrr option specifies the most
- recent revision on the default branch, but with cccciiii, a bare ----rrrr option
- also releases a lock and removes the working file, and is used to
- override any default ----llll or ----uuuu options established by shell aliases
- or scripts.
-
- ----llll[_r_e_v]
- works like ----rrrr, except it performs an additional ccccoooo ----llll for the
- deposited revision. Thus, the deposited revision is immediately
- checked out again and locked. This is useful for saving a revision
- although one wants to continue editing it after the checkin.
-
- ----uuuu[_r_e_v]
- works like ----llll, except that the deposited revision is not locked.
- This lets one read the working file immediately after checkin.
-
- The ----llll, bare ----rrrr, and ----uuuu options are mutually exclusive and silently
- override each other. For example, cccciiii ----uuuu ----rrrr is equivalent to cccciiii ----rrrr
- because bare ----rrrr overrides ----uuuu.
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- ----ffff[_r_e_v]
- forces a deposit; the new revision is deposited even it is not
- different from the preceding one.
-
- ----kkkk[_r_e_v]
- searches the working file for keyword values to determine its
- revision number, creation date, state, and author (see ccccoooo(1)), and
- assigns these values to the deposited revision, rather than
- computing them locally. It also generates a default login message
- noting the login of the caller and the actual checkin date. This
- option is useful for software distribution. A revision that is sent
- to several sites should be checked in with the ----kkkk option at these
- sites to preserve the original number, date, author, and state. The
- extracted keyword values and the default log message may be
- overridden with the options ----dddd, ----mmmm, ----ssss, ----wwww, and any option that
- carries a revision number.
-
- ----qqqq[_r_e_v]
- quiet mode; diagnostic output is not printed. A revision that is
- not different from the preceding one is not deposited, unless ----ffff is
- given.
-
- ----iiii[_r_e_v]
- initial checkin; report an error if the RCS file already exists.
- This avoids race conditions in certain applications.
-
- ----jjjj[_r_e_v]
- just checkin and do not initialize; report an error if the RCS file
- does not already exist.
-
- ----IIII[_r_e_v]
- interactive mode; the user is prompted and questioned even if the
- standard input is not a terminal.
-
- ----dddd[_d_a_t_e]
- uses _d_a_t_e for the checkin date and time. The _d_a_t_e is specified in
- free format as explained in ccccoooo(1). This is useful for lying about
- the checkin date, and for ----kkkk if no date is available. If _d_a_t_e is
- empty, the working file's time of last modification is used.
-
- ----MMMM[_r_e_v]
- Set the modification time on any new working file to be the date of
- the retrieved revision. For example, cccciiii ----dddd ----MMMM ----uuuu _f does not alter
- _f's modification time, even if _f's contents change due to keyword
- substitution. Use this option with care; it can confuse mmmmaaaakkkkeeee(1).
-
- ----mmmm_m_s_g
- uses the string _m_s_g as the log message for all revisions checked in.
- By convention, log messages that start with #### are comments and are
- ignored by programs like GNU Emacs's vvvvcccc package. Also, log messages
- that start with {{{{_c_l_u_m_p_n_a_m_e}}}} (followed by white space) are meant to
- be clumped together if possible, even if they are associated with
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- different files; the {{{{_c_l_u_m_p_n_a_m_e}}}} label is used only for clumping,
- and is not considered to be part of the log message itself.
-
- ----nnnn_n_a_m_e
- assigns the symbolic name _n_a_m_e to the number of the checked-in
- revision. cccciiii prints an error message if _n_a_m_e is already assigned to
- another number.
-
- ----NNNN_n_a_m_e
- same as ----nnnn, except that it overrides a previous assignment of _n_a_m_e.
-
- ----ssss_s_t_a_t_e
- sets the state of the checked-in revision to the identifier _s_t_a_t_e.
- The default state is EEEExxxxpppp.
-
- ----tttt_f_i_l_e
- writes descriptive text from the contents of the named _f_i_l_e into the
- RCS file, deleting the existing text. The _f_i_l_e may not begin with
- ----.
-
- ----tttt----_s_t_r_i_n_g
- Write descriptive text from the _s_t_r_i_n_g into the RCS file, deleting
- the existing text.
-
- The ----tttt option, in both its forms, has effect only during an initial
- checkin; it is silently ignored otherwise.
-
- During the initial checkin, if ----tttt is not given, cccciiii obtains the text
- from standard input, terminated by end-of-file or by a line
- containing .... by itself. The user is prompted for the text if
- interaction is possible; see ----IIII.
-
- For backward compatibility with older versions of RCS, a bare ----tttt
- option is ignored.
-
- ----TTTT Set the RCS file's modification time to the new revision's time if
- the former precedes the latter and there is a new revision; preserve
- the RCS file's modification time otherwise. If you have locked a
- revision, cccciiii usually updates the RCS file's modification time to the
- current time, because the lock is stored in the RCS file and
- removing the lock requires changing the RCS file. This can create
- an RCS file newer than the working file in one of two ways: first,
- cccciiii ----MMMM can create a working file with a date before the current time;
- second, when reverting to the previous revision the RCS file can
- change while the working file remains unchanged. These two cases
- can cause excessive recompilation caused by a mmmmaaaakkkkeeee(1) dependency of
- the working file on the RCS file. The ----TTTT option inhibits this
- recompilation by lying about the RCS file's date. Use this option
- with care; it can suppress recompilation even when a checkin of one
- working file should affect another working file associated with the
- same RCS file. For example, suppose the RCS file's time is 01:00,
- the (changed) working file's time is 02:00, some other copy of the
-
-
-
- PPPPaaaaggggeeee 4444
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- working file has a time of 03:00, and the current time is 04:00.
- Then cccciiii ----dddd ----TTTT sets the RCS file's time to 02:00 instead of the usual
- 04:00; this causes mmmmaaaakkkkeeee(1) to think (incorrectly) that the other
- copy is newer than the RCS file.
-
- ----wwww_l_o_g_i_n
- uses _l_o_g_i_n for the author field of the deposited revision. Useful
- for lying about the author, and for ----kkkk if no author is available.
-
- ----VVVV Print RCS's version number.
-
- ----VVVV_n Emulate RCS version _n. See ccccoooo(1) for details.
-
- ----xxxx_s_u_f_f_i_x_e_s
- specifies the suffixes for RCS files. A nonempty suffix matches any
- pathname ending in the suffix. An empty suffix matches any pathname
- of the form RRRRCCCCSSSS////_p_a_t_h or _p_a_t_h_1////RRRRCCCCSSSS////_p_a_t_h_2. The ----xxxx option can specify
- a list of suffixes separated by ////. For example, ----xxxx,,,,vvvv//// specifies two
- suffixes: ,,,,vvvv and the empty suffix. If two or more suffixes are
- specified, they are tried in order when looking for an RCS file; the
- first one that works is used for that file. If no RCS file is found
- but an RCS file can be created, the suffixes are tried in order to
- determine the new RCS file's name. The default for _s_u_f_f_i_x_e_s is
- installation-dependent; normally it is ,,,,vvvv//// for hosts like Unix that
- permit commas in filenames, and is empty (i.e. just the empty
- suffix) for other hosts.
-
- ----zzzz_z_o_n_e
- specifies the date output format in keyword substitution, and
- specifies the default time zone for _d_a_t_e in the ----dddd_d_a_t_e option. The
- _z_o_n_e should be empty, a numeric UTC offset, or the special string LLLLTTTT
- for local time. The default is an empty _z_o_n_e, which uses the
- traditional RCS format of UTC without any time zone indication and
- with slashes separating the parts of the date; otherwise, times are
- output in ISO 8601 format with time zone indication. For example,
- if local time is January 11, 1990, 8pm Pacific Standard Time, eight
- hours west of UTC, then the time is output as follows:
-
- _o_p_t_i_o_n _t_i_m_e _o_u_t_p_u_t
- ----zzzz 1111999999990000////00001111////11112222 00004444::::00000000::::00000000 (_d_e_f_a_u_l_t)
- ----zzzzLLLLTTTT 1111999999990000----00001111----11111111 22220000::::00000000::::00000000----00008888
- ----zzzz++++00005555::::33330000 1111999999990000----00001111----11112222 00009999::::33330000::::00000000++++00005555::::33330000
-
- The ----zzzz option does not affect dates stored in RCS files, which are
- always UTC.
-
- FFFFIIIILLLLEEEE NNNNAAAAMMMMIIIINNNNGGGG
- Pairs of RCS files and working files may be specified in three ways (see
- also the example section).
-
-
-
-
-
-
- PPPPaaaaggggeeee 5555
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- 1) Both the RCS file and the working file are given. The RCS pathname is
- of the form _p_a_t_h_1////_w_o_r_k_f_i_l_e_X and the working pathname is of the form
- _p_a_t_h_2////_w_o_r_k_f_i_l_e where _p_a_t_h_1//// and _p_a_t_h_2//// are (possibly different or empty)
- paths, _w_o_r_k_f_i_l_e is a filename, and _X is an RCS suffix. If _X is empty,
- _p_a_t_h_1//// must start with RRRRCCCCSSSS//// or must contain ////RRRRCCCCSSSS////.
-
- 2) Only the RCS file is given. Then the working file is created in the
- current directory and its name is derived from the name of the RCS file
- by removing _p_a_t_h_1//// and the suffix _X.
-
- 3) Only the working file is given. Then cccciiii considers each RCS suffix _X
- in turn, looking for an RCS file of the form _p_a_t_h_2////RRRRCCCCSSSS////_w_o_r_k_f_i_l_e_X or (if
- the former is not found and _X is nonempty) _p_a_t_h_2////_w_o_r_k_f_i_l_e_X.
-
- If the RCS file is specified without a path in 1) and 2), cccciiii looks for
- the RCS file first in the directory ....////RRRRCCCCSSSS and then in the current
- directory.
-
- cccciiii reports an error if an attempt to open an RCS file fails for an
- unusual reason, even if the RCS file's pathname is just one of several
- possibilities. For example, to suppress use of RCS commands in a
- directory _d, create a regular file named _d////RRRRCCCCSSSS so that casual attempts to
- use RCS commands in _d fail because _d////RRRRCCCCSSSS is not a directory.
-
- EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
- Suppose ,,,,vvvv is an RCS suffix and the current directory contains a
- subdirectory RRRRCCCCSSSS with an RCS file iiiioooo....cccc,,,,vvvv. Then each of the following
- commands check in a copy of iiiioooo....cccc into RRRRCCCCSSSS////iiiioooo....cccc,,,,vvvv as the latest revision,
- removing iiiioooo....cccc.
-
- cccciiii iiiioooo....cccc;;;; cccciiii RRRRCCCCSSSS////iiiioooo....cccc,,,,vvvv;;;; cccciiii iiiioooo....cccc,,,,vvvv;;;;
- cccciiii iiiioooo....cccc RRRRCCCCSSSS////iiiioooo....cccc,,,,vvvv;;;; cccciiii iiiioooo....cccc iiiioooo....cccc,,,,vvvv;;;;
- cccciiii RRRRCCCCSSSS////iiiioooo....cccc,,,,vvvv iiiioooo....cccc;;;; cccciiii iiiioooo....cccc,,,,vvvv iiiioooo....cccc;;;;
-
- Suppose instead that the empty suffix is an RCS suffix and the current
- directory contains a subdirectory RRRRCCCCSSSS with an RCS file iiiioooo....cccc. The each of
- the following commands checks in a new revision.
-
- cccciiii iiiioooo....cccc;;;; cccciiii RRRRCCCCSSSS////iiiioooo....cccc;;;;
- cccciiii iiiioooo....cccc RRRRCCCCSSSS////iiiioooo....cccc;;;;
- cccciiii RRRRCCCCSSSS////iiiioooo....cccc iiiioooo....cccc;;;;
-
- FFFFIIIILLLLEEEE MMMMOOOODDDDEEEESSSS
- An RCS file created by cccciiii inherits the read and execute permissions from
- the working file. If the RCS file exists already, cccciiii preserves its read
- and execute permissions. cccciiii always turns off all write permissions of
- RCS files.
-
- FFFFIIIILLLLEEEESSSS
- Several temporary files may be created in the directory containing the
- working file, and also in the temporary directory (see TTTTMMMMPPPPDDDDIIIIRRRR under
- EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT). A semaphore file or files are created in the directory
-
-
-
- PPPPaaaaggggeeee 6666
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- containing the RCS file. With a nonempty suffix, the semaphore names
- begin with the first character of the suffix; therefore, do not specify
- an suffix whose first character could be that of a working filename.
- With an empty suffix, the semaphore names end with ____ so working filenames
- should not end in ____. cccciiii never changes an RCS or working file. Normally,
- cccciiii unlinks the file and creates a new one; but instead of breaking a
- chain of one or more symbolic links to an RCS file, it unlinks the
- destination file instead. Therefore, cccciiii breaks any hard or symbolic
- links to any working file it changes; and hard links to RCS files are
- ineffective, but symbolic links to RCS files are preserved. The
- effective user must be able to search and write the directory containing
- the RCS file. Normally, the real user must be able to read the RCS and
- working files and to search and write the directory containing the
- working file; however, some older hosts cannot easily switch between real
- and effective users, so on these hosts the effective user is used for all
- accesses. The effective user is the same as the real user unless your
- copies of cccciiii and ccccoooo have setuid privileges. As described in the next
- section, these privileges yield extra security if the effective user owns
- all RCS files and directories, and if only the effective user can write
- RCS directories. Users can control access to RCS files by setting the
- permissions of the directory containing the files; only users with write
- access to the directory can use RCS commands to change its RCS files.
- For example, in hosts that allow a user to belong to several groups, one
- can make a group's RCS directories writable to that group only. This
- approach suffices for informal projects, but it means that any group
- member can arbitrarily change the group's RCS files, and can even remove
- them entirely. Hence more formal projects sometimes distinguish between
- an RCS administrator, who can change the RCS files at will, and other
- project members, who can check in new revisions but cannot otherwise
- change the RCS files.
-
- SSSSEEEETTTTUUUUIIIIDDDD UUUUSSSSEEEE
- To prevent anybody but their RCS administrator from deleting revisions, a
- set of users can employ setuid privileges as follows.
-
- +o Check that the host supports RCS setuid use. Consult a trustworthy
- expert if there are any doubts. It is best if the sssseeeetttteeeeuuuuiiiidddd(((()))) system
- call works as described in Posix 1003.1a Draft 5, because RCS can
- switch back and forth easily between real and effective users, even if
- the real user is rrrrooooooootttt. If not, the second best is if the sssseeeettttuuuuiiiidddd(((())))
- system call supports saved setuid (the {_POSIX_SAVED_IDS} behavior of
- Posix 1003.1-1990); this fails only if the real user is rrrrooooooootttt. If RCS
- detects any failure in setuid, it quits immediately.
-
- +o Choose a user _A to serve as RCS administrator for the set of users.
- Only _A will be able to invoke the rrrrccccssss command on the users' RCS files.
- _A should not be rrrrooooooootttt or any other user with special powers. Mutually
- suspicious sets of users should use different administrators.
-
- +o Choose a pathname _B that will be a directory of files to be executed by
- the users.
-
-
-
-
- PPPPaaaaggggeeee 7777
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- +o Have _A set up _B to contain copies of cccciiii and ccccoooo that are setuid to _A by
- copying the commands from their standard installation directory _D as
- follows:
-
- mmmmkkkkddddiiiirrrr _B
- ccccpppp _D////cccc[[[[iiiioooo]]]] _B
- cccchhhhmmmmoooodddd ggggoooo----wwww,,,,uuuu++++ssss _B////cccc[[[[iiiioooo]]]]
-
- +o Have each user prepend _B to their path as follows:
-
- PPPPAAAATTTTHHHH====_B::::$$$$PPPPAAAATTTTHHHH;;;; eeeexxxxppppoooorrrrtttt PPPPAAAATTTTHHHH # ordinary shell
- sssseeeetttt ppppaaaatttthhhh====((((_B $$$$ppppaaaatttthhhh)))) # C shell
-
- +o Have _A create each RCS directory _R with write access only to _A as
- follows:
-
- mmmmkkkkddddiiiirrrr _R
- cccchhhhmmmmoooodddd ggggoooo----wwww _R
-
- +o If you want to let only certain users read the RCS files, put the users
- into a group _G, and have _A further protect the RCS directory as
- follows:
-
- cccchhhhggggrrrrpppp _G _R
- cccchhhhmmmmoooodddd gggg----wwww,,,,oooo----rrrrwwwwxxxx _R
-
- +o Have _A copy old RCS files (if any) into _R, to ensure that _A owns them.
-
- +o An RCS file's access list limits who can check in and lock revisions.
- The default access list is empty, which grants checkin access to anyone
- who can read the RCS file. If you want limit checkin access, have _A
- invoke rrrrccccssss ----aaaa on the file; see rrrrccccssss(1). In particular, rrrrccccssss ----eeee ----aaaa_A
- limits access to just _A.
-
- +o Have _A initialize any new RCS files with rrrrccccssss ----iiii before initial checkin,
- adding the ----aaaa option if you want to limit checkin access.
-
- +o Give setuid privileges only to cccciiii, ccccoooo, and rrrrccccsssscccclllleeeeaaaannnn; do not give them
- to rrrrccccssss or to any other command.
-
- +o Do not use other setuid commands to invoke RCS commands; setuid is
- trickier than you think!
-
- EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
- RRRRCCCCSSSSIIIINNNNIIIITTTT
- options prepended to the argument list, separated by spaces. A
- backslash escapes spaces within an option. The RRRRCCCCSSSSIIIINNNNIIIITTTT options are
- prepended to the argument lists of most RCS commands. Useful
- RRRRCCCCSSSSIIIINNNNIIIITTTT options include ----qqqq, ----VVVV, ----xxxx, and ----zzzz.
-
-
-
-
-
-
- PPPPaaaaggggeeee 8888
-
-
-
-
-
-
- CCCCIIII((((1111)))) CCCCIIII((((1111))))
-
-
-
- TTTTMMMMPPPPDDDDIIIIRRRR
- Name of the temporary directory. If not set, the environment
- variables TTTTMMMMPPPP and TTTTEEEEMMMMPPPP are inspected instead and the first value
- found is taken; if none of them are set, a host-dependent default is
- used, typically ////ttttmmmmpppp.
-
- DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
- For each revision, cccciiii prints the RCS file, the working file, and the
- number of both the deposited and the preceding revision. The exit status
- is zero if and only if all operations were successful.
-
- IIIIDDDDEEEENNNNTTTTIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
- Author: Walter F. Tichy.
- Manual Page Revision: 5.7; Release Date: 1998/01/12.
- Copyright c 1982, 1988, 1989 by Walter F. Tichy.
- Copyright c 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- co(1), ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1), rcsintro(1),
- rcsmerge(1), rlog(1), rcsfile(4), RCSsource(5).
-
- Walter F. Tichy, RCS--A System for Version Control, _S_o_f_t_w_a_r_e--_P_r_a_c_t_i_c_e &
- _E_x_p_e_r_i_e_n_c_e 11115555, 7 (July 1985), 637-654.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 9999
-
-
-
-